package com.obelisco.vista.plantillas;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Component;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.extras.app.layout.TabPaneLayoutData;

import org.apache.commons.beanutils.MethodUtils;

import com.obelisco.vista.componentes.BotonesDialogo;
import com.obelisco.vista.componentes.Catalogo;
import com.obelisco.vista.componentes.DialogoMensaje;
import com.obelisco.vista.componentes.PaneBusquedaBase;
import com.obelisco.vista.componentes.PaneBusquedaListener;
import com.obelisco.vista.componentes.TablaDatosListener;
import com.obelisco.vista.componentes.TablaDatosSimple;
import com.obelisco.vista.componentes.TipoAccion;
import com.obelisco.vista.componentes.TipoDialogo;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.componentes.TipoVentana;
import com.obelisco.vista.componentes.Ventana;
import com.obelisco.vista.componentes.VentanaListener;
import com.obelisco.vista.controles.BotonAccion;
import com.obelisco.vista.herramientas.ImpresionUtils;

import echopointng.ContainerEx;
import echopointng.layout.DisplayLayoutData;
import echopointng.table.DefaultPageableSortableTableModel;

public abstract class VentanaListaBase extends VentanaBase {

	protected com.obelisco.vista.componentes.TablaDatosSimple tabla;

	public VentanaBase ventanaEmergente;

	protected DialogoMensaje dialogo;
	
	protected String claseTrabajo;

	protected Map<String, String> camposMostrar = new HashMap<String, String>();
	
	private List alineacionCampos = new ArrayList();

	private PaneBusquedaBase paneBusqueda;
	
	private int ultimoLista = -1;
	
	private List listaParametros = new ArrayList();
	
	//private ProcesadorReporte procesadorReporte;
	
	private String rutaArchivoReporte;
	
	private String metodoValidacion;
	
	DialogoMensaje dlgErrorValidacion;
	
	DialogoMensaje dialogoDatosImprimir;
		
	// Agreado por el proyecto Axelia
	private Vector<IFuncionesListener> listenersVentanaLista = new Vector<IFuncionesListener>();
	
	protected String campoToolTipText;
	
	
	public String getMetodoValidacion() {
		return metodoValidacion;
	}

	public void setMetodoValidacion(String metodoValidacion) {
		this.metodoValidacion = metodoValidacion;
	}

	public String getRutaArchivoReporte() {
		return rutaArchivoReporte;
	}

	public void setRutaArchivoReporte(String rutaArchivoReporte) {
		this.rutaArchivoReporte = rutaArchivoReporte;
	}

	// Constructores
	public VentanaListaBase(String titulo) {
		super(titulo, TipoVentana.LISTA);
		onCrear();
		this.addVentanaListener(eventosVentana);
	}

	public VentanaListaBase() {
		this("Ventana Lista");
	}

	protected abstract void cargarDatos();
	
	protected abstract void cargarDatos(List<Object> listaParametrosRealizarBusqueda);

	public abstract void onEliminacionConfirmada(Object objetos);

	public abstract void onFuncionPersonalizada(Object objeto, TipoFuncion tipoFuncion, String nombre);

	// Evento para el Manejo de Ventanas
	public VentanaListener eventosVentana = new VentanaListener() {

		public void onMostrar(Ventana ventana) {			
			inicializar();
		}

		public void onSalir(Ventana ventana, boolean cerrar) {
			cerrar = true;
		}
	};

	private VentanaListener eventoVentanaEmergente = new VentanaListener() {

		public void onMostrar(Ventana ventana) {

		}

		public void onSalir(Ventana ventana, boolean cerrar) {
			TipoAccion accionSeleccionada=null;
			try {
				accionSeleccionada = (TipoAccion)MethodUtils.invokeMethod(ventanaEmergente, "getAccionSeleccionada", null);
			} catch (NoSuchMethodException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			if ((accionSeleccionada == TipoAccion.ACEPTAR) || (accionSeleccionada == TipoAccion.SIGUIENTE)) {
				DefaultPageableSortableTableModel modelo = (DefaultPageableSortableTableModel) tabla.getTabla().getModel();
				int pagina = modelo.getCurrentPage();
				int columna = modelo.getCurrentSortColumn();
				int directiva = modelo.getSortDirective(columna);
								
				if(paneBusqueda!=null){
					if(paneBusqueda.getContenedorBusqueda()!=null){
						paneBusqueda.getContenedorBusqueda().setAceptar(true);
						paneBusqueda.distribuirResultadosBusqueda(paneBusqueda.getContenedorBusqueda().buscar());
						paneBusqueda.getContenedorBusqueda().setAceptar(false);
					}
				}
				else{
					cargarDatos();					
				}
				
				if (tabla.getModeloTabla() != null) {
					tabla.getModeloTabla().setCurrentPage(pagina);
					tabla.getModeloTabla().setSortDirective(columna, directiva);
					/*tabla.setModeloTabla(modelo);
					tabla.getTabla().setModel(modelo);*/
					tabla.getModeloTabla().sortByColumn(columna, directiva);
				}				
			}
		}
	};

	protected void inicializar() {
		if (campoToolTipText != null) {
			tabla.setCampoToolTipText(campoToolTipText);
		}
		if (paneBusqueda != null) {
			// paneBusqueda.ejecutarBusquedaActual();
			paneBusqueda.inicializar();
		} else {
			cargarDatos();
		}		
	}

	protected ActionListener manejadorEventoBoton = new ActionListener() {

		public void actionPerformed(ActionEvent evento) {
			if (evento.getActionCommand() == "SI") {
				List lista = new ArrayList();
				if (paneBusqueda != null)
				{
					lista = paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda();
				}
									
				/*if (validar(tabla.getFilasSeleccionadas(), tabla.getListaItems(), TipoFuncion.ELIMINAR, null, lista));
				{*/
					DefaultPageableSortableTableModel modelo = (DefaultPageableSortableTableModel) tabla.getTabla().getModel();
					int pagina = modelo.getCurrentPage();
					int columna = modelo.getCurrentSortColumn();
					int directiva = modelo.getSortDirective(columna);
										
					onEliminacionConfirmada(tabla.getFilasSeleccionadas());
					tabla.clearSelection();
					if (paneBusqueda != null)
					{
						if (paneBusqueda.getContenedorBusqueda().getParametrosRealizarBusqueda().size() != 0)
						{
							cargarDatos(paneBusqueda.getContenedorBusqueda().getParametrosRealizarBusqueda());
						}
						else
						{
							cargarDatos();
						}
					}
					else
					{
						cargarDatos();
					}
					try {
						tabla.getModeloTabla().setCurrentPage(pagina);
					}
					catch(Exception e) {
						tabla.getModeloTabla().setCurrentPage(pagina-1);
					}
					tabla.getModeloTabla().setSortDirective(columna, directiva);					
					tabla.getModeloTabla().sortByColumn(columna, directiva);
				//}
			}
			dialogo.salir();
		}
	};

	protected void onCrear() {
		
		this.getAreaTrabajo().removeAll();

		ContainerEx container = new ContainerEx();		
		container.setBackground(Color.WHITE);
		
		TabPaneLayoutData columnLayoutData = new TabPaneLayoutData();
		columnLayoutData.setTitle("Listado");
		container.setLayoutData(columnLayoutData);

		if (paneBusqueda != null) {
			DisplayLayoutData layoutData = new DisplayLayoutData();
			layoutData.setInsets(new Insets(new Extent(1,Extent.PERCENT)));
			paneBusqueda.setLayoutData(layoutData);
			container.add(paneBusqueda);
		}

		if (tabla == null) {
			tabla = new TablaDatosSimple();			
		}

		DisplayLayoutData layoutData = new DisplayLayoutData();
		layoutData.setOutsets(new Insets(new Extent(10)));
		tabla.setLayoutData(layoutData);

		container.add(tabla);
		getAreaTrabajo().add(container);
	}
	
	private boolean validar(Object objetosSeleccionado, List listaObjetos, TipoFuncion funcion, String nombreFuncion, List listaParametros)
	{
		boolean continuar = true;
		String mensajeErrorValidacion;
		if (metodoValidacion != null)
		{
			List parametrosValidacion = new ArrayList();
			parametrosValidacion.add(objetosSeleccionado);
			parametrosValidacion.add(funcion);
			parametrosValidacion.add(listaParametros);
			parametrosValidacion.add(nombreFuncion);
			parametrosValidacion.add(listaObjetos);

			try 
			{
				mensajeErrorValidacion = (String)MethodUtils.invokeMethod(servicio, metodoValidacion, parametrosValidacion);
				if ((mensajeErrorValidacion != null) && (!mensajeErrorValidacion.equals("")))
				{
					continuar = false;
					dlgErrorValidacion = DialogoMensaje.mostrar("Error", mensajeErrorValidacion, TipoDialogo.ERROR, BotonesDialogo.OK, listenerErrorValidacion);
				}
			}
			catch (Exception e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return continuar;
	}
	
	private ActionListener listenerErrorValidacion = new ActionListener()
	{
		public void actionPerformed(ActionEvent evento) {			
			dlgErrorValidacion.salir();
		}		
	};

	protected void funcion(TipoFuncion funcion, String nombreFuncion) {

		Object objetoEntidad = null;
		Object objetoSeleccion = null;
		// REVISAR
		List listaParametrosCompleta = new ArrayList(); // LISTA DE LOS PARAMETROS DEL PANE DE BUSQUEDA (SI HAY) + LOS SETEADOS MANUALMENTE
		/*if (paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size() > 0)
		{
			paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().remove(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()-1);
		}*/
		listaParametrosCompleta.addAll(listaParametros);
		if (ventanaEmergente != null)
		{
			ventanaEmergente.setModal(true);						
		}
		
		if (tabla.isSeleccionMultiple()) {
			List listaSeleccion = (List) tabla.getFilasSeleccionadas();
			objetoSeleccion = listaSeleccion;
		} else {
			objetoSeleccion = tabla.getFilasSeleccionadas();
		}
		
		if(paneBusqueda!=null){
			if (objetoSeleccion!= null)
			{
				int listaSize = paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size();			
				if (ultimoLista == -1)
				{
					ultimoLista = listaSize;
					paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().add(objetoSeleccion);
				}
				else if(ultimoLista != listaSize && ultimoLista <= listaSize)
				{
					paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().add(ultimoLista,objetoSeleccion);
				}
			}
		}
		
		if ((tabla.getFilasSeleccionadas() == null) && ((funcion == funcion.MODIFICAR) || (funcion == funcion.ELIMINAR) || (funcion == funcion.BUSCAR))) {
			dialogo = DialogoMensaje.mostrar("Error", "Debe seleccionar un Registro", TipoDialogo.ERROR, BotonesDialogo.OK, manejadorEventoBoton);
		} else if ((funcion == funcion.INCLUIR)	|| (funcion == funcion.MODIFICAR) || (funcion == funcion.BUSCAR)) {
			
			if (funcion == funcion.MODIFICAR || (funcion == funcion.BUSCAR)) {
				if (tabla.isSeleccionMultiple()) {
					List listaSeleccion = (List) tabla.getFilasSeleccionadas();
					objetoEntidad = listaSeleccion;
				} else {
					objetoEntidad = tabla.getFilasSeleccionadas();
				}
				try
				{
					if(paneBusqueda!=null){
						if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()>0){							
							listaParametrosCompleta.addAll(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda());
						}						
					}
					List lista = tabla.getListaItems();
					boolean continuar = validar(objetoEntidad, lista, funcion, nombreFuncion, listaParametrosCompleta);
					
					if (continuar)
					{							
						if(listaParametrosCompleta.size()>0){
							MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
							//ventanaEmergente.setParametros(listaParametrosCompleta);
						}
						
						MethodUtils.invokeMethod(ventanaEmergente, "setTipoFuncion", funcion);
						//ventanaEmergente.setTipoFuncion(funcion);
						if (nombreFuncion != null)
						{
							MethodUtils.invokeMethod(ventanaEmergente, "setNombreFuncion", nombreFuncion);
						}
						//ventanaEmergente.setNombreFuncion(nombreFuncion);
						MethodUtils.invokeMethod(ventanaEmergente,"transferirEntidad",objetoEntidad);
						//ventanaEmergente.transferirEntidad(objetoEntidad);
						
						ventanaEmergente.mostrarDialogo();
					}
				} 
				catch (Exception e) {
					e.printStackTrace();
				}
				
			} else if (funcion == funcion.INCLUIR) {
				// VALIDAMOS Q LA LISTA BASE TENGA PANEL DE BUSQUEDA
				if(paneBusqueda!=null){
					//VALIDAMOS QUE NO SEA NECESARIO EL PASE DE PARAMETROS PARA ABRIR EL DIALOGO
					if(paneBusqueda.getContenedorBusqueda().isValidarParametrosContenedor()){
						if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()==0){
							dialogo = DialogoMensaje.mostrar("Error", "Debe seleccionar un Criterio de Busqueda", TipoDialogo.ERROR, BotonesDialogo.OK, manejadorEventoBoton);					
						}
						else{
							try 
							{
								
								Class clase = Class.forName(claseTrabajo);
								objetoEntidad = clase.newInstance();
							
								if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()>0){									
									listaParametrosCompleta.addAll(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda());
								}
								
								boolean continuar = validar(objetoEntidad, tabla.getListaItems(), funcion, nombreFuncion, listaParametrosCompleta);
								
								if (continuar)
								{																
									if(listaParametrosCompleta.size()>0){
										//ventanaEmergente.setParametros(listaParametrosCompleta);
										MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
									}
									MethodUtils.invokeMethod(ventanaEmergente, "setTipoFuncion", funcion);
									if (nombreFuncion != null)
									{
										MethodUtils.invokeMethod(ventanaEmergente, "setNombreFuncion", nombreFuncion);
									}
									MethodUtils.invokeMethod(ventanaEmergente,"transferirEntidad",objetoEntidad);
									/*ventanaEmergente.setTipoFuncion(funcion);
									ventanaEmergente.setNombreFuncion(nombreFuncion);
									ventanaEmergente.transferirEntidad(objetoEntidad);*/
									ventanaEmergente.mostrarDialogo();
								}
							} 
							catch (Exception e) 
							{
								e.printStackTrace();
							}
						}								
					}
					else{
						try {
							Class clase = Class.forName(claseTrabajo);
							objetoEntidad = clase.newInstance();
						
							if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()>0){
								listaParametrosCompleta.addAll(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda());
							}
							
							boolean continuar = validar(objetoEntidad, tabla.getListaItems(), funcion, nombreFuncion, listaParametrosCompleta);
							
							if (continuar)
							{
								if(listaParametrosCompleta.size()>0){
									MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
								}
								MethodUtils.invokeMethod(ventanaEmergente, "setTipoFuncion", funcion);
								if (nombreFuncion != null)
								{
									MethodUtils.invokeMethod(ventanaEmergente, "setNombreFuncion", nombreFuncion);
								}
								MethodUtils.invokeMethod(ventanaEmergente,"transferirEntidad",objetoEntidad);
								
								/*ventanaEmergente.setTipoFuncion(funcion);
								ventanaEmergente.setNombreFuncion(nombreFuncion);
								ventanaEmergente.transferirEntidad(objetoEntidad);*/
								ventanaEmergente.mostrarDialogo();
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
								
				}
				else{
					try {
						Class clase = Class.forName(claseTrabajo);
						objetoEntidad = clase.newInstance();
						
						if(listaParametrosCompleta.size()>0){
							//ventanaEmergente.setParametros(listaParametrosCompleta);
							listaParametrosCompleta.addAll(listaParametros);
							MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
						}
						
						boolean continuar = validar(objetoEntidad, tabla.getListaItems(), funcion, nombreFuncion, listaParametrosCompleta);
						
						if (continuar)
						{							
							MethodUtils.invokeMethod(ventanaEmergente, "setTipoFuncion", funcion);
							if (nombreFuncion != null)
							{
								MethodUtils.invokeMethod(ventanaEmergente, "setNombreFuncion", nombreFuncion);
							}
							MethodUtils.invokeMethod(ventanaEmergente,"transferirEntidad",objetoEntidad);
							/*ventanaEmergente.setTipoFuncion(funcion);
							ventanaEmergente.setNombreFuncion(nombreFuncion);
							ventanaEmergente.transferirEntidad(objetoEntidad);*/
							if (ventanaEmergente instanceof Catalogo) {
								Catalogo catalogo = (Catalogo) ventanaEmergente;								
								catalogo.setTablaLista(tabla);
							}
							ventanaEmergente.mostrarDialogo();
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				
			}

		} else if (funcion == funcion.ELIMINAR) {
			try {
				String mensaje;
				objetoEntidad = tabla.getFilasSeleccionadas();
				
				if(listaParametrosCompleta.size()>0){
					//ventanaEmergente.setParametros(listaParametrosCompleta);
					listaParametrosCompleta.addAll(listaParametros);
					MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
				}
				
				if(paneBusqueda!=null){
					if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()>0){							
						listaParametrosCompleta.addAll(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda());
					}						
				}
				
				boolean continuar = validar(objetoEntidad, tabla.getListaItems(), funcion, nombreFuncion, listaParametrosCompleta);
				
				if (continuar)
				{
					if (!tabla.isSeleccionMultiple()) {
						mensaje = "Esta Seguro de Eliminar el Registro";
					} else {
						mensaje = "Esta Seguro de Eliminar los Registros";
					}
					dialogo = DialogoMensaje.mostrar("Eliminar", mensaje, TipoDialogo.CONFIRMACION, BotonesDialogo.SI_NO, manejadorEventoBoton);
				}
			}
			catch (Exception e) {
				e.printStackTrace();
			}
		}
		else if (funcion == funcion.IMPRIMIR) 
		{
			if (tabla.getAdapter() != null)
			{
				onImprimirLista(tabla.getItems());
			}
			else
			{
				dialogoDatosImprimir = DialogoMensaje.mostrar("", "NO EXISTEN DATOS PARA IMPRIMIR", TipoDialogo.INFORMACION, BotonesDialogo.OK, new ActionListener()
				{

					public void actionPerformed(ActionEvent arg0) {
						dialogoDatosImprimir.salir();						
					}
					
				});
			}
		}
		else
		{
			if ((tabla.getFilasSeleccionadas() != null)){
				if (tabla.isSeleccionMultiple()) {
					List listaSeleccion = (List) tabla.getFilasSeleccionadas();
					objetoEntidad = listaSeleccion;
				} else {
					objetoEntidad = tabla.getFilasSeleccionadas();
				}
				try
				{
					if(paneBusqueda!=null){
						if(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda().size()>0){							
							listaParametrosCompleta.addAll(paneBusqueda.getContenedorBusqueda().getParametroContenedorBusqueda());
						}						
					}
					
					boolean continuar = validar(objetoEntidad, tabla.getListaItems(), funcion, nombreFuncion, listaParametrosCompleta);
					
					if (continuar)
					{							
						if(listaParametrosCompleta.size()>0){
							MethodUtils.invokeMethod(ventanaEmergente, "setParametros", listaParametrosCompleta);
						}
						
						MethodUtils.invokeMethod(ventanaEmergente, "setTipoFuncion", funcion);
						if (nombreFuncion != null)
						{
							MethodUtils.invokeMethod(ventanaEmergente, "setNombreFuncion", nombreFuncion);
						}
						MethodUtils.invokeMethod(ventanaEmergente,"transferirEntidad",objetoEntidad);
						
						ventanaEmergente.mostrarDialogo();
					}
				} 
				catch (Exception e) {
					e.printStackTrace();
				}				
			}
			else{
				dialogo = DialogoMensaje.mostrar("Error", "Debe seleccionar un Registro", TipoDialogo.ERROR, BotonesDialogo.OK, manejadorEventoBoton);
			}
		}		
	}
	
	public void onImprimirLista(List lista)
	{
		Map<String, Object> mapaParametros = new HashMap<String, Object>();
		if (paneBusqueda != null)
		{			
			mapaParametros.putAll(paneBusqueda.getContenedorBusqueda().getParametrosImprimir());					
		}
		if (lista != null)
		{
			ImpresionUtils.imprimir(lista, mapaParametros, getProcesadorReporte(), rutaArchivoReporte, this);
		}
		else
		{
			dialogoDatosImprimir = DialogoMensaje.mostrar("", "NO EXISTEN DATOS PARA IMPRIMIR", TipoDialogo.INFORMACION, BotonesDialogo.OK, new ActionListener()
			{

				public void actionPerformed(ActionEvent arg0) {
					dialogoDatosImprimir.salir();						
				}
				
			});
		}
	}
	
	protected void accion(TipoAccion accion, TipoFuncion funcion, String nombre) {

	}

	// Metodos de Acceso a los Atributos
	public VentanaBase getVentanaEmergente() {
		return ventanaEmergente;
	}

	public void setVentanaEmergente(VentanaBase objetoVentanaEmergente) {
		this.ventanaEmergente = objetoVentanaEmergente;
		ventanaEmergente.addVentanaListener(this.eventoVentanaEmergente);

	}

	public String getClaseTrabajo() {
		return claseTrabajo;
	}

	public void setClaseTrabajo(String claseTrabajo) {
		this.claseTrabajo = claseTrabajo;
	}

	public Map<String, String> getCamposMostrar() {
		return camposMostrar;
	}
	
	public List getAlineacionCampos() {
		return alineacionCampos;
	}
	
	public void setAlineacionCampos(List alineacionCampos) {
		this.alineacionCampos = alineacionCampos;
	}

	public void setCamposMostrar(Map<String, String> camposMostrar) {
		this.camposMostrar = camposMostrar;
	}

	public PaneBusquedaBase getPaneBusqueda() {
		return paneBusqueda;
	}
	
	private PaneBusquedaListener eventoBusqueda = new PaneBusquedaListener() {

		public void resultadoBusqueda(List datos) {
			// TODO Auto-generated method stub
			tabla.clearSelection();
			tabla.setItems(datos, camposMostrar, alineacionCampos);
		}

	};

	public void setPaneBusqueda(PaneBusquedaBase paneBusqueda) {
		this.paneBusqueda = paneBusqueda;
		if (paneBusqueda != null) {
			// Posiciono el Panel de Busqueda en el Lugar Indicado
			onCrear();
			// Configuro el Listener
			paneBusqueda.addPaneBusquedaListener(eventoBusqueda);
		}

	}

	public List getListaParametros() {
		return listaParametros;
	}

	public void setListaParametros(List listaParametros) {
		this.listaParametros = listaParametros;
	}

	public com.obelisco.vista.componentes.TablaDatosSimple getTabla() {
		return tabla;
	}

	public void setTabla(com.obelisco.vista.componentes.TablaDatosSimple tabla) {
		this.tabla = tabla;
	}

	// Agreado por el proyecto Axelia
	public void addFuncionesListener(IFuncionesListener listener) {
		listenersVentanaLista.add(listener);
	}

	public void removeFuncionesListener(IFuncionesListener listener) {
		listenersVentanaLista.remove(listener);
	}

	public String getCampoToolTipText() {
		return campoToolTipText;
	}

	public void setCampoToolTipText(String campoToolTipText) {
		this.campoToolTipText = campoToolTipText;
	}
}
